#include "mylabel.h"
#include <QDebug>
#include <QMouseEvent>
#include <QLabel>

MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{

    //设置鼠标追踪
    setMouseTracking(true);
}


//鼠标进入事件
void MyLabel::enterEvent(QEvent *){
    qDebug() << "鼠标进入";
}


//鼠标移开事件
void MyLabel::leaveEvent(QEvent *){
    qDebug() << "鼠标移开";
}

void MyLabel::mouseMoveEvent(QMouseEvent *ev){
    qDebug() << "鼠标移动";
}

void MyLabel::mousePressEvent(QMouseEvent *ev){
    int x = ev->x();
    int y = ev->y();
    //QString str = "鼠标按下了，坐标为:[" + QString::number(x)+ ", " + QString::number(y) + "]";
    QString str = QString("鼠标按下了，坐标为:[%1,%2]").arg(x).arg(y);

    Qt::MouseButton qtButton = ev->button();
    if(Qt::LeftButton == qtButton){
        qDebug() << "鼠标左键按下了";
    }

    //qDebug() << "鼠标按下";
    qDebug() << str;
}

void MyLabel::mouseReleaseEvent(QMouseEvent *ev){
    qDebug() << "鼠标松开";

    Qt::MouseButtons qtButtons = ev->buttons();
    if(qtButtons & Qt::LeftButton){
        qDebug() << "鼠标左键松开了";
    }

}

//事件分发器: 用途 分发事件
bool MyLabel::event(QEvent * event){

    //如果是鼠标按下，拦截事件，不向下分发
    if(event->MouseButtonPress == event->type()){
        QMouseEvent * mouseEvent = static_cast<QMouseEvent *>(event);

        int x = mouseEvent->x();
        int y = mouseEvent->y();

        QString str = QString("鼠标按下无效，坐标为:[%1,%2]").arg(x).arg(y);

        qDebug() << str;
        return true;
    }

    //其它的事件抛给父类处理
    return QLabel::event(event);

}
